package com.zc.finkDemo.config;

import com.zc.finkDemo.entities.ChangeMessage;
import com.zc.finkDemo.entities.RelationInfo;
import com.zc.finkDemo.entities.RuleInfo;
import com.zc.finkDemo.service.RelationService;
import com.zc.finkDemo.service.RuleService;

/**
 * 消息监听
 * 用于处理ECS信息的变动，和规则的变动 去更新缓存  减少数据库查询的IO
 * 如果业务允许关系和配置有一定延迟  可以考虑引入caffine缓存  加入过期时间  不用监听消息
 */
public class ListenESCChange {

    public void processChange(ChangeMessage message) {
//        消息变更的类型 0-规则变更 1-关系变更
        if (0 == message.getType()) {
            //规则变更
            if (RuleService.cache.containsKey(message.getKey())) {
                //把新的规则更新到缓存中
                String content = message.getContent();
                RuleService.cache.put(message.getKey(), new RuleInfo());
            }
        }
        if (1 == message.getType()) {
            if (RelationService.cache.containsKey(message.getKey())) {
                //把新的规则更新到缓存中
                String content = message.getContent();
                RelationService.cache.put(message.getKey(), new RelationInfo());
            }
        }

    }
}
